/**
 ******************************************************************************
 * @file           : bsp_log_config.c
 * @brief          : BSP Log System Implementation
 ******************************************************************************
 */

/* Includes ------------------------------------------------------------------*/
#include "bsp_log_config.h"

/* Private variables ---------------------------------------------------------*/
static LogLevel_e sg_current_log_level = LOG_LEVEL_DEBUG;

/* Exported functions --------------------------------------------------------*/

/**
 * @brief       设置日志级别
 *
 * @param[in]   level: 日志级别
 */
void log_set_level(LogLevel_e level)
{
    sg_current_log_level = level;
}

/**
 * @brief       获取当前日志级别
 *
 * @retval      当前日志级别
 */
LogLevel_e log_get_level(void)
{
    return sg_current_log_level;
}

#if (LOG_SYSTEM_TYPE == 3)
/**
 * @brief       自定义日志函数（需要用户实现）
 *
 * @param[in]   level: 日志级别
 * @param[in]   fmt: 格式化字符串
 */
void custom_log(LogLevel_e level, const char *fmt, ...)
{
    /* 示例实现 */
    if (level < sg_current_log_level)
    {
        return;
    }
    
    va_list args;
    va_start(args, fmt);
    
    /* 添加日志前缀 */
    switch (level)
    {
        case LOG_LEVEL_DEBUG:
            printf("[DEBUG] ");
            break;
        case LOG_LEVEL_INFO:
            printf("[INFO ] ");
            break;
        case LOG_LEVEL_WARNING:
            printf("[WARN ] ");
            break;
        case LOG_LEVEL_ERROR:
            printf("[ERROR] ");
            break;
    }
    
    /* 打印日志内容 */
    vprintf(fmt, args);
    printf("\r\n");
    
    va_end(args);
}
#endif
